package Server.server.ratelimit.provider;

import Server.server.ratelimit.RateLimit;
import Server.server.ratelimit.impl.TokenBucketRateLimitImpl;

import java.util.HashMap;
import java.util.Map;

public class RateLimitProvider {

    // 用于存储每个接口名称与对用的速率限制器实例之间的映射关系
    private Map<String, RateLimit> rateLimitMap = new HashMap<>();

    /**
     * 根据接口名称获取对应的速率限制器实例
     * @param interfaceName 接口名称
     * @return 对应接口的速率限制器实例
     */
    public RateLimit getRateLimit(String interfaceName) {
        // 检查rateLimitMap中是否已经存在该接口的速率限制器实例
        if (rateLimitMap.containsKey(interfaceName)) {
            return rateLimitMap.get(interfaceName);
        } else {
            // 如果不存在，则创建一个新的速率限制器实例并添加到rateLimitMap中
            RateLimit rateLimit = new TokenBucketRateLimitImpl(100, 10);
            rateLimitMap.put(interfaceName, rateLimit);
            return rateLimit;
        }
    }
}